﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Garbarino.Controllers
{
    public class GarbarinoController : Controller
    {
        //
        // GET: /Garbarino/
        private static Contenedor listaProductos = new Contenedor();
        private static List<ProdChanguito> changuito ;
        

        public ActionResult Index()
        {
            changuito = new List<ProdChanguito>();
            return View(model: listaProductos);
        }

        [HttpGet]
        public ActionResult Alta()
        {
            return View(listaProductos.lista);
        
        }
        [HttpPost]
        public ActionResult Alta(String nombre, Int16 cantidad, float precio, CategoriaEnum categoria)
        {
            listaProductos.lista.Add(
                new Producto(nombre: nombre,
                    precio: precio,
                    categoria: categoria,
                    cantidad: cantidad
                    ));
            return RedirectToAction("Index");
        }

        [HttpGet]
        public ActionResult Compra()
        {
            return View(listaProductos.lista);

        }
        [HttpPost]
        public ActionResult Compra(Int16 producto, Int16 cantidad)
        {
            Producto p1 = listaProductos.lista[producto];
            changuito.Add(new ProdChanguito(p1, cantidad));
            ViewBag.changuito = changuito;
           // return View(listaProductos.lista);
            return RedirectToAction("MostrarCompra");

        }
        
        public ActionResult MostrarCompra()
        {
           
            return View(changuito);
        }
       


        public ActionResult Baja(Int16 pos)
        {
            listaProductos.lista.RemoveAt(pos);
            return RedirectToAction("Index");
        }

        [HttpGet]
        public ActionResult Modificar(Int16 pos)
        {

            ViewBag.pos = pos;
            return View(listaProductos.lista[pos]);

        }
        [HttpPost]
        public ActionResult Modificar(String nombre, Int16 cantidad, Int16 pos, CategoriaEnum Categoria, float precio)
        {

            listaProductos.lista[pos]._cantidad = cantidad;
            listaProductos.lista[pos]._nombre = nombre;
            listaProductos.lista[pos]._categoria = Categoria;
            listaProductos.lista[pos]._precio = precio;
            return RedirectToAction("Index");
        }

        public ActionResult MostrarFiltro(CategoriaEnum categoria)
        {
            ViewBag.pos = categoria;

            return View(listaProductos.lista);
        }

    }
    public enum CategoriaEnum
    {
        televisores, heladeras, lavarropas, cocina, consolas, celulares
    }

    public class Producto
    {

        public String _nombre { get; set; }
        public Int16 _id { get; set; }
        public Int16 _cantidad { get; set; }
        public float _precio { get; set; }
        public CategoriaEnum _categoria { get; set; }

        public Producto(String nombre, float precio, CategoriaEnum categoria, Int16 cantidad)
        {
            this._id = 0;
            this._nombre = nombre;
            this._precio = precio;
            this._categoria = categoria;
            this._cantidad = cantidad;

        }


    }
    public class Contenedor
    {


        public List<Producto> lista { get; set; }
        public Contenedor()
        {
            this.lista = new List<Producto>();
            this.lista.Add(new Producto("samsun", 1500.50f, CategoriaEnum.televisores, 10));
            this.lista.Add(new Producto("samsunld", 1500.50f, CategoriaEnum.televisores, 10));
            this.lista.Add(new Producto("appel", 15000f, CategoriaEnum.consolas, 10));
            this.lista.Add(new Producto("play 4", 10000f, CategoriaEnum.consolas, 10));
            this.lista.Add(new Producto("Longvie", 1500f, CategoriaEnum.cocina, 20));
            this.lista.Add(new Producto("aurora", 3500f, CategoriaEnum.cocina, 2));
            this.lista.Add(new Producto("latix", 3000f, CategoriaEnum.lavarropas, 10));
            this.lista.Add(new Producto("Dream", 5000f, CategoriaEnum.lavarropas, 8));
            this.lista.Add(new Producto("wirpol", 4000f, CategoriaEnum.heladeras, 8));
            this.lista.Add(new Producto("Elextrodux", 6000f, CategoriaEnum.heladeras, 10));
            this.lista.Add(new Producto("samsung v3", 1000f, CategoriaEnum.celulares, 10));
            this.lista.Add(new Producto("Iphone 5s", 5000f, CategoriaEnum.celulares, 10));


        }

    }
    public class ProdChanguito
    {
        public Producto prod { get; set; }
        public Int16 _cantidad { get; set; }
        public ProdChanguito(Producto producto, Int16 cantidad)
        {
            this.prod = producto;
            this._cantidad = cantidad;


        }

    }
}
